package com.brainhealth.customer.domain;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import com.fasterxml.jackson.annotation.JsonFormat;
import io.lettuce.core.protocol.CommandHandler;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.brainhealth.common.annotation.Excel;
import com.brainhealth.common.core.domain.BaseEntity;

/**
 * 机构信息对象 mechanism
 * 
 * @author wolong
 * @date 2023-07-26
 */
public class Mechanism extends BaseEntity
{
    public Mechanism()
    {
        children = new ArrayList<>();
    }

    private static final long serialVersionUID = 1L;

    /** $column.columnComment */
    private Long mechanismId;

    /** 机构名称 */
    @Excel(name = "机构名称")
    private String mechanismName;

    /** 银行账号 */
    @Excel(name = "银行账号")
    private String bankAccount;

    /** 开户行 */
    @Excel(name = "开户行")
    private String bankName;

    /** 营业执照副本图片 */
    @Excel(name = "营业执照副本图片")
    private String businessLicense;

    /** 机构审核状态 */
    @Excel(name = "机构审核状态")
    private Long examineStatus;

    /** 联系人 */
    @Excel(name = "联系人")
    private String contactsName;

    /** 联系方式 */
    @Excel(name = "联系方式")
    private String contactsPhone;

    /** 申请认证时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "申请认证时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date applyTime;

    /** 认证通过时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "认证通过时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date applyDoneTime;

    /** 父级机构ID */
    @Excel(name = "父级机构ID")
    private Long parentId;

    /** $column.columnComment */
    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
    private String qrCode;
    /**
     * 分享连接地址
     */
    private String shareUrl;

    /**
     * 子机构信息
     */
    private List<Mechanism> children;

    public void setMechanismId(Long mechanismId) 
    {
        this.mechanismId = mechanismId;
    }

    public Long getMechanismId() 
    {
        return mechanismId;
    }
    public void setMechanismName(String mechanismName) 
    {
        this.mechanismName = mechanismName;
    }

    public String getMechanismName() 
    {
        return mechanismName;
    }
    public void setBankAccount(String bankAccount) 
    {
        this.bankAccount = bankAccount;
    }

    public String getBankAccount() 
    {
        return bankAccount;
    }
    public void setBankName(String bankName) 
    {
        this.bankName = bankName;
    }

    public String getBankName() 
    {
        return bankName;
    }
    public void setBusinessLicense(String businessLicense) 
    {
        this.businessLicense = businessLicense;
    }

    public String getBusinessLicense() 
    {
        return businessLicense;
    }
    public void setExamineStatus(Long examineStatus) 
    {
        this.examineStatus = examineStatus;
    }

    public Long getExamineStatus() 
    {
        return examineStatus;
    }
    public void setContactsName(String contactsName) 
    {
        this.contactsName = contactsName;
    }

    public String getContactsName() 
    {
        return contactsName;
    }
    public void setContactsPhone(String contactsPhone) 
    {
        this.contactsPhone = contactsPhone;
    }

    public String getContactsPhone() 
    {
        return contactsPhone;
    }
    public void setApplyTime(Date applyTime) 
    {
        this.applyTime = applyTime;
    }

    public Date getApplyTime() 
    {
        return applyTime;
    }
    public void setApplyDoneTime(Date applyDoneTime) 
    {
        this.applyDoneTime = applyDoneTime;
    }

    public Date getApplyDoneTime() 
    {
        return applyDoneTime;
    }
    public void setParentId(Long parentId) 
    {
        this.parentId = parentId;
    }

    public Long getParentId() 
    {
        return parentId;
    }
    public void setQrCode(String qrCode) 
    {
        this.qrCode = qrCode;
    }

    public String getQrCode() 
    {
        return qrCode;
    }

    public List<Mechanism> getChildren()
    {
        return children;
    }

    public void setChildren(List<Mechanism> children)
    {
        this.children = children;
    }

    public String getShareUrl()
    {
        return shareUrl;
    }

    public void setShareUrl(String shareUrl)
    {
        this.shareUrl = shareUrl;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("mechanismId", getMechanismId())
            .append("mechanismName", getMechanismName())
            .append("bankAccount", getBankAccount())
            .append("bankName", getBankName())
            .append("businessLicense", getBusinessLicense())
            .append("examineStatus", getExamineStatus())
            .append("contactsName", getContactsName())
            .append("contactsPhone", getContactsPhone())
            .append("applyTime", getApplyTime())
            .append("applyDoneTime", getApplyDoneTime())
            .append("parentId", getParentId())
            .append("qrCode", getQrCode())
            .append("createBy", getCreateBy())
            .append("createTime", getCreateTime())
            .append("updateBy", getUpdateBy())
            .append("updateTime", getUpdateTime())
            .append("remark", getRemark())
            .toString();
    }
}
